联想小新 Duet Linux 花屏问题

我在联想小新 Duet 上安装 Arch Linux 已经使用 3 个多月了,作为日常主力机使用,整体体验非常好。最近趁有时间,开始梳理过程中遇到的一些问题以及解决经验。我遇到的第一个问题是,联想小新 Duet 在 Arch Linux 下出现花屏,被我一顿折腾给折腾好了。

直到在《Lenovo 82TQ - Internal DSI display unusable - various groups of rows with totally noisy pixels (#10071)》一文中,联想小新 Duet 的代号就是 82TQ,我发现国外也有同机型用户遇到了同样的问题。

先说结论

在 Linux 6.8-rc2 下,花屏问题已解决。同时,我也摸索出一个内核参数,使用后也可以解决花屏问题。该参数放在后续小节中给出。

花屏样子如下(我当时未截屏记录,这里引用文章中截图):

Pasted image 20240212113248.png


问题分析

在《Lenovo 82TQ - Internal DSI display unusable - various groups of rows with totally noisy pixels (#10071)》中,该 issue 提出者 Martin Špinler,在一个月前(2024年1月),升级到 Linux 6.6 内核之后出现了花屏问题。(注:其实我早在 3 个月前,就遇到了了同样问题,但我已经不记得我使用的内核版本号)

Martin Špinler 提到一个关键信息,在 Linux 6.5 下是正常的。在后续的讨论中,大家开始 git bisect,找 Linux 6.5 ~ Linux 6.6 中,哪个 Commit 导致了问题出现。最终锁定了这个 Commit:88b065943cb5 ("drm/i915/dsi: Do display on sequence later on icl+", 2023-06-08)

这块本来也是有问题的,但是现在有问题的地方更多了。

开发者 Ville Syrjälä:在 Revert "drm/i915/dsi: Do display on sequence later on icl+" (0d87d67f) · Commits · drm / nouveau 中对这个问题进行了概括:

This reverts commit 88b06594.
这将恢复提交 88b06594。

Lenovo 82TQ is unhappy if we do the display on sequence this late. The display output shows severe corruption.
如果这么晚才按顺序显示,联想 82TQ 会很不高兴。显示输出显示严重损坏。

It's unclear if this is a failure on our part (perhaps something to do with sending commands in LP mode after HS/video mode transmission has been started? Though the backlight on command at least seems to work) or simply that there are some commands in the sequence that are needed to be done earlier (eg. could be some DSC init stuff?). If the latter then I don't think the current Windows code would work either, but maybe this was originally tested with an older driver, who knows.
目前尚不清楚这是否是我们的故障(也许与在 HS/视频模式传输开始后以 LP 模式发送命令有关?尽管命令上的背光至少似乎可以工作)或者只是有一些命令需要提前完成的序列(例如,可能是一些 DSC 初始化的东西?)。如果是后者,那么我认为当前的 Windows 代码也不起作用,但也许这最初是用较旧的驱动程序测试的,谁知道呢。

Root causing this fully would likely require a lot of experimentation which isn't really feasible without direct access to the machine, so let's just accept failure and go back to the original sequence.
造成这种情况的根源可能需要大量的实验,如果不直接访问机器,这实际上是不可行的,所以让我们接受失败并返回到原始序列。

最后 Ville Syrjälä 把 88b065943cb5 给 revert 了。

Yes, the pipe state doesn't match!... and DSI link not ready still persists. 这句话很有价值,我在我的电脑启动日志中也观察到了同样的日志,说明这部分背后,存在一些问题。


该 revert 在哪个版本 Kernel 生效

Linux 6.8-rc2 [LWN.net] 中,查到了该 revert 在 Linux 6.8-rc2 上落地。

于是我自行编译了 Arch Linux AUR 下的 drm-tip-git 内核,他的版本是 6.8.0-rc3-1-drm-tip-git

前面说到我摸索出一个内核参数,使用后可以解决花屏问题。我尝试去掉这些参数后启动,看看是否会花屏:

title   Arch Linux drm-git-less-params (linux-drm-tip-git)
linux   /vmlinuz-linux-drm-tip-git
initrd  /intel-ucode.img
initrd  /initramfs-linux-drm-tip-git.img
options root=PARTUUID=省略 zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs

去掉之后,再次运行,确实不花屏了


我摸索的内核参数

最后附上我摸索出的内核参数:

options root=PARTUUID=省略 zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs i8042.dumbkbd=1 ideapad_laptop.allow_v4_dytc=1

如果你也在联想小新 Duet(Lenovo 82TQ)上安装 Linux,在 Linux 6.6~Linux 6.8-rc2 之间遇到了花屏问题,不妨实施上述内核参数。


接下来做什么?

Ville Syrjälä 说道,他需要实际设备进行大量实践,但是他没有这个设备,这是一个实际困难。而我有这台设备。我可以参与这部分功能的测试,这是我能想到的。

但是,我目前还是聚焦在 LLM 学习上(参见《Maeiee的成长周报》 W4),没有足够的精力来顾及这个主题。这个事情可以列为 Plan todo,等到后面有时间的时候,作为一个 hackathon,我先记录在看板上了。


结尾

如果你也是联想小新 Duet(Lenovo 82TQ)用户,也在安装 Linux,欢迎交流经验,happy hacking!


本文作者:Maeiee

本文链接:联想小新 Duet Linux 花屏问题

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!